// const { default: axios } = require('axios')
// const Task = require('../orm/model/Task')
// const TImageineDesign = require('../orm/model/TImageineDesign')
const Task = require('./Task')
// 10s
const interval = 1000 * 10
class Job {

    async run() {
        const task = new Task();
        await task.query()
        // 如果没有任务
        if (task.empty) {
            console.log('任务胃口')
            setTimeout(() => {
                new Job().run()
            }, interval)
            return
        }
        try {
            await   task.run()
            new Job().run()
            //    createAction()
            // await task.success()
          
        } catch (error) {
            await task.fail(error) 
            setTimeout(() => {
                new Job().run()
            }, interval)
        }
      
        // await Task.update({ status: 1 }, { where: { id } })
        // if (!res) {
        //     console.error('运行错误', res)
        //     return
        // }
        // if (!res || !res[0]) {
        //     console.log('没有任务')
        //     setTimeout(() =>
        //         this.run()
        //         , 1000 * 10);
        //     return
        // }

        // const item = res[0].dataValues
        // const id = item.id
        // try {

        //     if (res.length > 0) {

        //         await Task.update({ status: 1 }, { where: { id } })
        //         const images = await action(item);
        //         await TImageineDesign.update({
        //             input: JSON.stringify(item.params),
        //             output: JSON.stringify({ images })
        //         }, {
        //             where: {
        //                 status: 1,
        //                 taskId: id
        //             }
        //         })

        //         await Task.update({ status: 2, failReason: '', result: JSON.stringify({ images }) }, { where: { id } })
        //         this.run()
        //     } else {
        //         setTimeout(() => this.run(), 1000 * 10)
        //     }
        // } catch (error) {
        //     console.log('error=', error);
        //     await Task.update({ status: 3, failReason: JSON.stringify(error) }, { where: { id } })
        //     this.run()
        // }

        // Task.findAll({limit:1,where:{
        //     status:1
        // }}).then(async res=>{

        //     console.log('query',Array.isArray(res),res.length);
        //     if(res.length>0){
        //         await Task.update({status:1})
        //         action(res[0]).then(()=>{
        //             console.log('task done,new task');
        //             Task.update({status:0},{
        //                 where:{
        //                     id:res[0].id
        //                 }
        //             }).then(()=>{
        //                 this.run()
        //             })

        //         }).catch((err)=>{
        //             this.run()
        //         })
        //     }else{
        //         console.log('no task ,10s new task');
        //         setTimeout(()=>{
        //             this.run()
        //         },1000*10)
        //     }

        // })
    }
}
module.exports = Job